#pragma once

#include "exports.hpp"




namespace Engine
{
	namespace Ui
	{
		struct ENGINE_UI_API WidgetState
		{
			enum Type
			{
				Normal,
				Hovered,
				Active,
			};
		};
		///////////////////////////////////////////////////////////////////////////////////////////

		struct ENGINE_UI_API Widgets
		{
			enum Type
			{
				Widget,
				Text,
				Frame,
				LineEdit,
				AbstractButton,
				PushButton,
				ProgressBar,
				Console,
				Desktop,
				Window,
				Dialog,

				None,
			};

			/**
			 * Get the parent for the given widget type.
			 */
			static Type parent(Type type);
		};
		///////////////////////////////////////////////////////////////////////////////////////////

		struct ENGINE_UI_API Attributes
		{
			enum Type
			{
				BackgroundColor,
				BackgroundGlyph,
				BackgroundGlyphTopLeft,
				BackgroundGlyphTop,
				BackgroundGlyphTopRight,
				BackgroundGlyphRight,
				BackgroundGlyphBottomRight,
				BackgroundGlyphBottom,
				BackgroundGlyphBottomLeft,
				BackgroundGlyphLeft,

				ForegroundColor,
				ForegroundGlyph,
				ForegroundGlyphTopLeft,
				ForegroundGlyphTop,
				ForegroundGlyphTopRight,
				ForegroundGlyphRight,
				ForegroundGlyphBottomRight,
				ForegroundGlyphBottom,
				ForegroundGlyphBottomLeft,
				ForegroundGlyphLeft,

				Font,
				FontColor,
				FontStyle,
				FontSize,
				FontWeight,
				FontOutline,

				MinWidth,
				MaxWidth,
				MinHeight,
				MaxHeight,

				Resizing,
			};
		};
		///////////////////////////////////////////////////////////////////////////////////////////

		/**
		 * Those are all borders, that are used by the Frame widget.
		 */
		struct ENGINE_UI_API Border
		{
			enum Type
			{
				Center,
				TopLeft,
				Top,
				TopRight,
				Right,
				BottomRight,
				Bottom,
				BottomLeft,
				Left,
			};

			static Type fromString(QString border);
		};
		///////////////////////////////////////////////////////////////////////////////////////////
	}
	///////////////////////////////////////////////////////////////////////////////////////////////
}
///////////////////////////////////////////////////////////////////////////////////////////////////
